Skip to content

您的 DNS 與 IP 請求

标签
你的網絡
尚未在地化
字数
2462 字
阅读时间
10 分钟

DNS 代表「網域名稱系統」(Domain Name System),是您的瀏覽器(及其他應用程式)用來尋找服務 IP 位址的一項服務。它就像一本巨大的「聯絡人清單」(或老一輩說的電話簿),運作方式就像是您詢問它一個名字,它會回傳對應的電話號碼讓您撥打。只不過在這裏,它回傳的是 IP 位址。

每當您的瀏覽器想要透過 www.google.com 存取 Google 等服務時,您的瀏覽器(Chrome 或 Firefox)會查詢 DNS 服務以尋找 Google 網頁伺服器的 IP 位址。

如果您已經感到困惑,這裡有一段視覺化解釋 DNS 的影片:https://www.youtube.com/watch?v=vrxwXXytEuI [Invidious]

通常,DNS 服務由您的網路服務供應商(ISP)提供,並由您連線的網路自動設定。此 DNS 服務也可能受到資料保留法規的約束,或者僅僅因為其他原因(例如為了廣告目的收集資料)而保留日誌。因此,ISP 只需查看這些日誌,就能知道您在網上所做的一切,而這些資訊反過來可能被提供給對手。方便的是,這也是許多對手利用 DNS 封鎖來實施審查或家長監護的最簡單方法。對於某些網站(例如將 thepiratebay.org 重新導向到某個政府網站),提供的 DNS 伺服器會給您一個不同的位址(而非真實位址)。此類封鎖在世界各地廣泛應用於特定網站。

使用私人 DNS 服務或自建 DNS 服務可以緩解這些問題,但另一個問題是,大多數 DNS 請求預設情況下仍是以明文(未加密)在網路上傳送的。即使您在無痕視窗中使用 HTTPS 並使用私人 DNS 服務瀏覽 PornHub,您的瀏覽器仍有極高的機率會向某些 DNS 伺服器發送明文未加密的 DNS 請求,基本上就是在問:「請問 www.pornhub.com 的 IP 位址是什麼?」。

因為它未加密,您的 ISP 和/或任何其他對手仍然可以攔截(使用中間人攻擊[^97])您的請求,並知道且可能記錄您的 IP 正在尋找什麼。同一個 ISP 也可以竄改 DNS 回應,即使您使用的是私人 DNS。這使得使用私人 DNS 服務變得毫無用處。

此外,許多裝置和應用程式會使用寫死(Hardcoded)的 DNS 伺服器,繞過您設定的任何系統設定。例如,大多數(70%)智慧電視和很大一部分(46%)遊戲主機就是這種情況。對於這些裝置,您必須強制它們停止使用其寫死的 DNS 服務,這可能會導致它們無法正常運作。

解決此問題的方法是使用加密 DNS,例如 DoH(DNS over HTTPS)、DoT(DNS over TLS)搭配私人 DNS 伺服器(這可以使用像 pi-hole這樣的解決方案在本地自託管,使用像 nextdns.io 這樣的遠端託管解決方案,或使用您的 VPN 供應商或 Tor 網路提供的解決方案)。這應該可以防止您的 ISP 或某些中間人窺探您的請求……但可能未必完全有效。

插播一個小聲明:即使本節為了技術理解多次提及 Cloudflare 服務,本指南並不必然背書或推薦 Cloudflare 服務。

不幸的是,大多數瀏覽器(包括 Chrome/Brave)在大多數 HTTPS 連線中使用的 TLS 協定,會透過 SNI 握手再次洩漏網域名稱(這可以在 Cloudflare 此處檢查:https://www.cloudflare.com/ssl/encrypted-sni/ [Archive.org])。截至撰寫本指南時,只有基於 Firefox 的瀏覽器在某些網站上支援 ECH(Encrypted Client Hello [加密客戶端 Hello],之前稱為 eSN),這將端到端加密所有內容(除了使用安全的私人 DNS over TLS/HTTPS 之外),並允許您向第三方隱藏您的 DNS 請求**。 而且此選項預設並未啟用,因此您必須自行啟用。

除了瀏覽器支援有限之外,現階段只有 Cloudflare CDN 背後的網路服務和 CDN 支援 ECH/eSNI。這意味著大多數主流平台(截至撰寫本指南時)均不支援 ECH 和 eSNI,例如:

  • Amazon(包括 AWS、Twitch...)
  • Microsoft(包括 Azure、OneDrive、Outlook、Office 365...)
  • Google(包括 Gmail、Google Cloud...)
  • Apple(包括 iCloud、iMessage...)
  • Reddit
  • YouTube
  • Facebook
  • Instagram
  • Twitter
  • GitHub
  • ...

像俄羅斯和中國這樣的一些國家可能(儘管有文章報導但未經證實)會在網路層級封鎖 ECH/eSNI 握手,以允許窺探並防止繞過審查。這意味著如果您不允許他們查看連線內容,您將無法與服務建立 HTTPS 連線。

問題還不止於此。HTTPS TLS 驗證的一部分稱為 OCSP,基於 Firefox 的瀏覽器使用的這個協定會以您正在造訪網站的憑證序號形式洩漏詮釋資料(Metadata)。對手可以透過比對憑證號碼,輕鬆找出您正在造訪哪個網站。此問題可以透過使用 OCSP 裝訂(OCSP stapling)來緩解。不幸的是,這在 Firefox/Tor 瀏覽器中雖已啟用但預設並未強制執行。而且您造訪的網站也必須支援它,並非所有網站都支援。另一方面,基於 Chromium 的瀏覽器使用一種稱為 CRLSets 的不同系統,這可能有其優越之處。

這裏列出了各種瀏覽器處理 OCSP 的行為:https://www.ssl.com/blogs/how-do-browsers-handle-revoked-ssl-tls-certificates/ [Archive.org]

下圖說明了您在基於 Firefox 的瀏覽器上可能遇到的問題: 最後,即使您使用支援 ECH/eSNI 和 OCSP 裝訂的自訂加密 DNS 伺服器(DoH 或 DoT),這可能仍然不夠,因為流量分析研究顯示,仍然可以可靠地對不需要的請求進行指紋識別和封鎖。在最近的研究中,只有 DNS over Tor 能夠顯示出有效的 DNS 隱私保護,但即使這樣仍然可能被其他手段破解(請參閱 您的匿名化 Tor/VPN 流量)。

人們也可以決定使用 Tor 隱藏服務 DNS(Tor Hidden DNS Service)或 ODoH(Oblivious DNS over HTTPS [不經意 DNS over HTTPS])來進一步增加隱私/匿名性,但不幸的是,據我們所知,截至撰寫本文時,這些方法僅由 Cloudflare 提供(https://blog.cloudflare.com/welcome-hidden-resolver/ [Archive.org], https://blog.cloudflare.com/oblivious-dns/ [Archive.org])。這些是可行且相當安全的技術選項,但如果您想使用 Cloudflare(儘管有些研究人員指出存在風險[^54]),這也是一個道德選擇。

請注意,Oblivious DNS 針對的是竊聽此處列出的其中一個連線但非全部連線的對手。它無法解決能夠竊聽許多或所有這些連線的全球被動對手(GPA)的問題:

  • 客戶端解析器(client resolver)和遞迴解析器(recursive resolver)之間的流量
  • 遞迴解析器和 ODNS 解析器之間的流量
  • ODNS 解析器和權威伺服器之間的流量。

最後,還有一種新的可能性稱為 DoHoT,即 DNS over HTTPS over Tor,這也可以進一步增加您的隱私/匿名性,如果您對 Linux 比較熟練,可以考慮使用。請見 https://github.com/alecmuffett/dohot [Archive.org]。本指南目前不會在此方面提供協助,但也許很快就會推出。

下圖展示了基於我們目前知識的 DNS 和 HTTPS 隱私現狀。 至於您的正常日常使用(非敏感),請記住,目前只有基於 Firefox 的瀏覽器支援 ECH(前身為 eSNI),且現階段僅對託管在 Cloudflare CDN 背後的網站有用。如果您偏好基於 Chrome 的版本(這是可以理解的,因為某些功能整合得更好,如即時翻譯),那麼我們會推薦使用 Brave,它支援所有 Chrome 擴充功能,並提供比 Chrome 好得多的隱私保護。

但故事並未就此結束。因為經過這一切,即使您加密了 DNS 並使用了所有可能的緩解措施。對任何伺服器的簡單 IP 請求可能仍然允許對手偵測到您正在造訪哪個網站。這僅僅是因為大多數網站都有與之綁定的唯一 IP,正如此處所解釋的:https://blog.apnic.net/2019/08/23/what-can-you-learn-from-an-ip-address/ [Archive.org]。這意味著對手可以建立一個包含已知網站及其 IP 的資料集,然後將此資料集與您請求的 IP 進行比對。在大多數情況下,這將導致正確猜測出您正在造訪的網站。這意味著儘管有 OCSP 裝訂,儘管有 ECH/eSNI,儘管使用了加密 DNS……對手無論如何仍然可以猜到您正在造訪的網站。

因此,為了緩解所有這些問題(儘可能地盡力而為),本指南稍後將推薦兩種解決方案:使用 Tor 和虛擬化的(參見 附錄 W:虛擬化)多層 VPN over Tor 解決方案(DNS over VPN over Tor 或 DNS over TOR)。其他選項也將進行解釋(Tor over VPN、僅 VPN、無 Tor/VPN),但較不推薦。

贡献者

文件历史

用一腔熱血撰写